package com.ruoyi.business.service;

import java.util.List;
import java.util.Map;
import java.io.IOException;
import javax.servlet.http.HttpServletResponse;

import com.ruoyi.business.domain.TrainStation;
import com.ruoyi.business.domain.vo.TrainStationVo;

/**
 * 火车车站Service接口
 * 
 * @author ruoyi
 * @date 2025-03-06
 */
public interface ITrainStationService 
{
    /**
     * 查询火车车站
     * 
     * @param id 火车车站主键
     * @return 火车车站
     */
    public TrainStation selectTrainStationById(Long id);

    /**
     * 查询火车车站列表
     * 
     * @param trainStation 火车车站
     * @return 火车车站集合
     */
    public List<TrainStation> selectTrainStationList(TrainStation trainStation);

    /**
     * 新增火车车站
     * 
     * @param trainStation 火车车站
     * @return 结果
     */
    public int insertTrainStation(TrainStation trainStation);

    /**
     * 修改火车车站
     * 
     * @param trainStation 火车车站
     * @return 结果
     */
    public int updateTrainStation(TrainStation trainStation);

    /**
     * 批量删除火车车站
     * 
     * @param ids 需要删除的火车车站主键集合
     * @return 结果
     */
    public int deleteTrainStationByIds(Long[] ids);

    /**
     * 删除火车车站信息
     * 
     * @param id 火车车站主键
     * @return 结果
     */
    public int deleteTrainStationById(Long id);

    /**
     * 批量新增火车车站
     * @param trainStationList
     * @return 结果
     */
    public int InsertTrainStations(List<TrainStation> trainStationList);

    /**
     * 按车次编号分组查询火车车站
     *
     * @param trainStation 查询参数
     * @return 分组后的火车车站列表
     */
    public Map<String, Object> selectTrainStationGroups(TrainStation trainStation);

    /**
     * 下载火车车站导入模板 - 不包含错误字段
     *
     * @param response HTTP响应
     * @throws IOException IO异常
     */
    public void downloadCustomTemplate(HttpServletResponse response) throws IOException;

    /**
     * 导出火车车站导入错误数据 - 使用ID替代行号
     *
     * @param response HTTP响应
     * @param errorDataList 错误数据列表
     * @throws IOException IO异常
     */
    public void exportCustomErrorData(HttpServletResponse response, List<TrainStationVo> errorDataList) throws IOException;

    /**
     * 清空火车站点数据
     * 
     * @return 结果
     */
    public int clearTrainStation();
}
